//-----------------------------------------------------------------------------
// Name: InanimateObject.h
// Auth: Dante Ratto, Robert Darty, & Paul Godfrey
// Desc: Handles the creation, destruction and updating of an InanimateObject
//-----------------------------------------------------------------------------

#ifndef _INANIMATEOBJECT_
#define _INANIMATEOBJECT_

#include "SharedConstants.h"
#include "Bounding.h"

//-----------------------------------------------------------------------------
// cInanimateObject:
//-----------------------------------------------------------------------------
class cInanimateObject
{
public:
	// Constructors:
	cInanimateObject();
	cInanimateObject(float, float, float);
	~cInanimateObject();

	// cInanimateObject Methods:
	
	//-----------------------------------------------------------------------------
	void Draw(enum eInanimateType);
	// Desc: Renders the specified InanimateObject at its current position

	//-----------------------------------------------------------------------------
	void SetType(enum eInanimateType);
	// Desc: Sets type

	//-----------------------------------------------------------------------------
	enum eInanimateType GetType();
	// Desc: Gets type

	//-----------------------------------------------------------------------------
	float GetPositionX();
	// Desc: Gets X position

	//-----------------------------------------------------------------------------
	float GetPositionY();
	// Desc: Gets Y position

	//-----------------------------------------------------------------------------
	float GetPositionZ();
	// Desc: Gets Z position

	//-----------------------------------------------------------------------------
	void SetPosition(tVector3f&);
	// Desc: Sets color of InanimateObject with 3 floats

	//-----------------------------------------------------------------------------
	void SetPosition(float, float, float);
	// Desc: Sets color of InanimateObject with 3 floats

	//-----------------------------------------------------------------------------
	int GetColor();
	// Desc: Gets color of AnimateObject

	//-----------------------------------------------------------------------------
	void SetColor(const tVector3f&);
	// Desc: Sets color of AnimateObject with 3 floats

	//-----------------------------------------------------------------------------
	void DrawRightWall();
	// Desc: Draws a wall (depricated)

	//-----------------------------------------------------------------------------
	void DrawLeftWall();
	// Desc: Draws a wall (depricated)

	//-----------------------------------------------------------------------------
	void DrawFrontWall();
	// Desc: Draws a wall (depricated)

	//-----------------------------------------------------------------------------
	void DrawBackWall();
	// Desc: Draws a wall (depricated)

	//-----------------------------------------------------------------------------
	void DrawWall();
	// Desc: Draws a wall (depricated)

	//-----------------------------------------------------------------------------
	void DrawTree();
	// Desc: Draws a tree

	//-----------------------------------------------------------------------------
	void DrawPalmTree();
	// Desc: Draws a palm tree

	//-----------------------------------------------------------------------------
	void DrawFence1();

	void DrawFence2();

	void DrawFence3();

	void DrawFence4();

	void DrawFence5();

	void DrawFence6();

	void DrawFence7();

	void DrawFence8();

	void DrawFence9();

	void DrawFence10();

	void DrawFence11();

	void DrawFence12();
	// Desc: All depricated

	//-----------------------------------------------------------------------------
	void SetFence(float, float, float, float);
	// Desc: Set Fence location

	//-----------------------------------------------------------------------------
	void DrawFence();
	// Desc: Draws a fence

	//-----------------------------------------------------------------------------
	void DrawTownCenterWall( bool, bool );
	//Desc: Draws the town center walls

	//-----------------------------------------------------------------------------
	void DrawGate( bool );
	//Draws a gate

	//-----------------------------------------------------------------------------
	void DrawBox();
	// Desc: Draws a box

	//-----------------------------------------------------------------------------
	void DrawBarn();
	// Desc: Draws a barn

	//-----------------------------------------------------------------------------
	void SetXOffset(float);
	// Desc: Sets X offset
	
	//-----------------------------------------------------------------------------
	void SetZOffset(float);
	// Desc: Sets Z Offset

	//-----------------------------------------------------------------------------
	cBounding* GetBounding();
	// Desc: Gets bounding box for inanimate

	//-----------------------------------------------------------------------------
	void SetBounding( float, float, float, float, float, float );
	// Desc: Sets Bounding box for inanimate

private:
	// Members:
	enum eInanimateType mType;

	tVector3f mPosition;
	tVector3f mColor;
	
	float mXOffset;
	float mZOffset;
	
	cBounding mBounding;
};

//-----------------------------------------------------------------------------
// Functions:
//-----------------------------------------------------------------------------
cInanimateObject* GetInanimateObject();

#endif